<?php

namespace Modules\Shop\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Shop\Entities\Category;

class CategoryController extends Controller
{
    /**
     * 展示商城控制模板
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
//        拿到数据库中商品的全部数据并将它传递进模板中进行展示
//        $categorys = Category::get();
//        dd($categorys);
        $categorys = Category::getTreeCategory();
//        展示模板
        return view('shop::category.index',compact('categorys'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
        return view('shop::create');
    }

    /**
     * 商品数据添加方法
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(Request $request)
    {
//        dd($_POST);
        //将post数据中的值写入分类表
//        Categroy::create($request->all());
        Category::create($request->all());
//        设置闪存提示信息
        session()->flash('success','添加分类成功');
//        跳转页面
        return back();
    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('shop::show');
    }

    /**
     * 编辑方法
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit($id)
    {
//        dd($id);
//        获得当前需要编辑的id条的旧数据
        $category = Category::find($id);
//        dd($category);
//        获得所有分类
        $categorys = Category::getTreeCategory($category);
//        将获得的旧数据传递到模板中，进行展示
//        dd($categorys);
        return view('shop::category.edit',compact('category','categorys'));
    }

    /**
     * 处理商品编辑方法  并且加入表单验证
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(Request $request,$id)
    {
//        dd($id);
//        获得数据库中对应的第id条数据
        $category = Category::find($id);
//        获得页面提交的数据
        $post = $request->all();
//        dd($post);
//        让页面提交上来的数据赋值给数据库中的对应的数据
        $category->cname = $post['cname'];
        $category->pid = $post['pid'];
//        将更改完的数据存入库
        $category->save();
//        设置闪存提示
        session()->flash('success','编辑分类成功');
//        跳转页面
        return redirect()->route('category.index');
    }

    /**
     * 删除方法
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {
//        因为存在删除父类，子类无法安置的问题，所以这里进行判定，如果有子集就不能删除，提示用户不能删除，并调回当前页面
            //1.获得要删除对象的说有数据，以便于下面的判定使用
            $categroy = Category::find($id);
//            dd($categroy);
            if(Category::hasChildCategory($categroy)){
//                设置提示信息
                session()->flash('danger','请先删除当前分类的子分类,再来删除该分类');
//                跳转页面
                return back();
            }


//        删除对应id的数据
        Category::destroy($id);
//        设置闪存提示
        session()->flash('success','分类删除成功');
//        跳转页面
        return back();

    }
}
